package com.neu.carbon.mes.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.neu.common.annotation.Excel;
import com.neu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Date;
import java.util.List;

/**
 * 计划排产对象 mes_product_schedule
 *
 * @author neuedu
 * @date 2025-02-28
 */
@ApiModel("计划排产")
public class MesProductSchedule extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @ApiModelProperty("编号")
    @Excel(name = "编号")
    private Long id;

    /**
     * 排产编号
     */
    @ApiModelProperty("排产编号")
    private String serialNo;

    /**
     * 计划编号
     */
    @ApiModelProperty("计划编号")
    @Excel(name = "计划编号")
    private Long planId;

    /**
     * 订单外键
     */
    @ApiModelProperty("订单外键")
    @Excel(name = "订单外键")
    private Long orderId;

    /**
     * 产品
     */
    @ApiModelProperty("产品")
    @Excel(name = "产品")
    private String product;

    /**
     * 产品外键
     */
    @ApiModelProperty("产品外键")
    @Excel(name = "产品外键")
    private Long materialId;

    /**
     * 型号
     */
    @ApiModelProperty("型号")
    @Excel(name = "型号")
    private String model;

    /**
     * 规格
     */
    @ApiModelProperty("规格")
    @Excel(name = "规格")
    private String specification;

    /**
     * 单位
     */
    @ApiModelProperty("单位")
    @Excel(name = "单位")
    private String unit;

    /**
     * BOM
     */
    @ApiModelProperty("BOM")
    @Excel(name = "BOM")
    private String BOMName;

    /**
     * BOM外键
     */
    @ApiModelProperty("BOM外键")
    @Excel(name = "BOM外键")
    private Long bomId;

    /**
     * 生产线
     */
    @ApiModelProperty("生产线")
    @Excel(name = "生产线")
    private Long productLine;

    /**
     * 工艺
     */
    @ApiModelProperty("工艺")
    @Excel(name = "工艺")
    private String process;

    /**
     * 工艺外键
     */
    @ApiModelProperty("工艺外键")
    @Excel(name = "工艺外键")
    private String processId;

    /**
     * 项目
     */
    @ApiModelProperty("项目")
    @Excel(name = "项目")
    private String projectName;

    /**
     * 项目外键
     */
    @ApiModelProperty("项目外键")
    @Excel(name = "项目外键")
    private String projectId;

    /**
     * 待产数量
     */
    @ApiModelProperty("待产数量")
    @Excel(name = "待产数量")
    private double requireQuantity;

    /**
     * 已产数量
     */
    @ApiModelProperty("已产数量")
    @Excel(name = "已产数量")
    private double productQuantity;

    /**
     * 生产日期
     */
    @ApiModelProperty(value = "生产日期", example = "2021-09-10")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date productDate;

    /**
     * 交货日期
     */
    @ApiModelProperty(value = "交货日期", example = "2021-09-10")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "交货日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deliveryDate;

    /**
     * 发布状态
     */
    @ApiModelProperty("发布状态")
    @Excel(name = "发布状态")
    private String status;

    /**
     * 领料状态
     */
    @ApiModelProperty("领料状态")
    @Excel(name = "领料状态")
    private String receiveStatus;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    @Excel(name = "备注")
    private String remark;

    /**
     * 排产物料信息信息
     */
    @ApiModelProperty(hidden = true)
    private List<MesProductScheduleMaterial> mesProductScheduleMaterialList;

    @Override
    public String getRemark() {
        return remark;
    }

    @Override
    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getSerialNo() {
        return serialNo;
    }

    public void setSerialNo(String serialNo) {
        this.serialNo = serialNo;
    }

    public Long getPlanId() {
        return planId;
    }

    public void setPlanId(Long planId) {
        this.planId = planId;
    }

    public String getProduct() {
        return product;
    }

    public void setProduct(String product) {
        this.product = product;
    }

    public Long getMaterialId() {
        return materialId;
    }

    public void setMaterialId(Long materialId) {
        this.materialId = materialId;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getSpecification() {
        return specification;
    }

    public void setSpecification(String specification) {
        this.specification = specification;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public String getBOMName() {
        return BOMName;
    }

    public void setBOMName(String BOMName) {
        this.BOMName = BOMName;
    }

    public Long getBomId() {
        return bomId;
    }

    public void setBomId(Long bomId) {
        this.bomId = bomId;
    }

    public Long getProductLine() {
        return productLine;
    }

    public void setProductLine(Long productLine) {
        this.productLine = productLine;
    }

    public String getProcess() {
        return process;
    }

    public void setProcess(String process) {
        this.process = process;
    }

    public String getProcessId() {
        return processId;
    }

    public void setProcessId(String processId) {
        this.processId = processId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public double getRequireQuantity() {
        return requireQuantity;
    }

    public void setRequireQuantity(double requireQuantity) {
        this.requireQuantity = requireQuantity;
    }

    public double getProductQuantity() {
        return productQuantity;
    }

    public void setProductQuantity(double productQuantity) {
        this.productQuantity = productQuantity;
    }

    public Date getProductDate() {
        return productDate;
    }

    public void setProductDate(Date productDate) {
        this.productDate = productDate;
    }

    public Date getDeliveryDate() {
        return deliveryDate;
    }

    public void setDeliveryDate(Date deliveryDate) {
        this.deliveryDate = deliveryDate;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getReceiveStatus() {
        return receiveStatus;
    }

    public void setReceiveStatus(String receiveStatus) {
        this.receiveStatus = receiveStatus;
    }

    public List<MesProductScheduleMaterial> getMesProductScheduleMaterialList() {
        return mesProductScheduleMaterialList;
    }

    public void setMesProductScheduleMaterialList(List<MesProductScheduleMaterial> mesProductScheduleMaterialList) {
        this.mesProductScheduleMaterialList = mesProductScheduleMaterialList;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
}
